﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Comun;

namespace Guada
{
    public partial class FrmPaciente : Plantilla
    {
        public FrmPaciente()
        {
            InitializeComponent();
        }

        private void FrmPaciente_Load(object sender, EventArgs e)
        {
            try
            {
                FacProFacu.Sistema sistema = new FacProFacu.Sistema();
                Controles control = new Controles();
                control.CargarCBox(CmbTipoDoc, sistema.TablaDeTabla("1", "TIPODOC").Tables["TIPODOC"], "CODIGO", "DESCRIPCION", Controles.ComboBoxLabel.SelectOne);
                control.CargarCBox(CmbSexo, sistema.TablaDeTabla("2", "SEXO").Tables["SEXO"], "CODIGO", "DESCRIPCION", Controles.ComboBoxLabel.SelectOne);
                control.CargarCBox(CmbEstCivil, sistema.TablaDeTabla("3", "ESTADOCIVIL").Tables["ESTADOCIVIL"], "CODIGO", "DESCRIPCION", Controles.ComboBoxLabel.SelectOne);
                control.CargarCBox(CmbTipoCob, sistema.GetObraSocial().Tables["OBRASOCIAL"], "CODIGO", "DESCRIPCION", Controles.ComboBoxLabel.SelectOne);
            }
            catch
            {
                MessageBox.Show("Se ha producido un Error", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void AsignarHistorial()
        {
            try
            {
                FacProFacu.Sistema sistema = new FacProFacu.Sistema();
                lblsHC.Text = Convert.ToString(sistema.GetNuevoHC());
                lblSinHC.Visible = false;
                lblsHC.Visible = true;
            }
            catch { }
        }

        private void BtnGrabar_Click(object sender, EventArgs e)
        {
            try
            {
                if (ControlDeDatos(GrpDatosPac.Text))
                {
                    if (ControlDeDatos(GrpDatosDom.Text))
                    {
                        if (ControlDeDatos(GrpDatosObraS.Text))
                        {
                            FacProFacu.Sistema sistema = new FacProFacu.Sistema();
                            int NumPac = sistema.GetNuevoPac();
                            FacProFacu.Paciente paciente = new FacProFacu.Paciente();
                            int nuevo = paciente.AltaPaciente(NumPac.ToString(), txtApellido.Text, txtNombre.Text, CmbTipoDoc.SelectedIndex.ToString(),
                                 txtNumDoc.Text, txtFecNac.Text, CmbSexo.SelectedIndex.ToString(),
                                 CmbEstCivil.SelectedIndex.ToString(), txtCelu.Text, txtCalle.Text, txtAltura.Text,
                                 txtPiso.Text, txtDpto.Text, txtLocalidad.Text, txtProv.Text, txtTelef.Text,
                                 CmbTipoCob.SelectedIndex.ToString(), txtAsociado.Text);
                            if (nuevo > 0)
                            {
                                AsignarHistorial();
                                int asigando = paciente.AltaHistoriaClinica(lblsHC.Text, NumPac.ToString());
                                if (asigando == 0)
                                {
                                    MessageBox.Show("Error al realizar el Alta.", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                }
                                else
                                {
                                    MessageBox.Show("La grabación se ha realizado con éxito.", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                }
                            }
                        }
                        else
                        {
                            MessageBox.Show("Faltan completar datos de la Cobertura Médica.", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            this.CmbTipoCob.Focus();
                        }
                    }
                    else
                    {
                        MessageBox.Show("Faltan completar datos Domiciliarios. ", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        this.txtCalle.Focus();
                    }
                }
                else
                {
                    MessageBox.Show("Faltan completar datos del Paciente. ", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    this.txtApellido.Focus();
                }
            }
            catch {
                MessageBox.Show("ERROR NO SE ACTUALIZO NADA");
            }
        }

        private void BtnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private bool ControlDeDatos(string grupo)
        {
            bool datos = false;

            switch (grupo)
            {
                case "Datos del Paciente":
                    if ((txtApellido.Text != "")&&(txtNombre.Text!= "") && (CmbTipoDoc.SelectedIndex > 0) && (txtNumDoc.Text != "") &&
                        (txtFecNac.Text != "") && (CmbSexo.SelectedIndex > 0) && (CmbEstCivil.SelectedIndex > 0))
                    {
                        datos = true;
                    }
                    return datos;
                    break;
                case "Datos del Domicilio :":
                    if ((txtCalle.Text != "") && (txtAltura.Text != "") &&
                        (txtLocalidad.Text != "") && (txtProv.Text != ""))
                    {
                        datos = true;
                    }
                    return datos;
                    break;
                case "Obra Social y Prepaga":
                    if ((CmbTipoCob.SelectedIndex > 0) && (txtAsociado.Text != ""))
                    {
                        datos = true;
                    }
                    return datos;
                    break;
                default:
                    return datos;
                    break;
            }
        }
    }
}
